package org.jiuling.camera.ezviz;

import org.jiuling.camera.ezviz.config.EzvizConfig;
import org.jiuling.camera.ezviz.model.EzvizTokenModel;
import org.jiuling.network.tools.http.request.config.HttpRequestConfig;
import org.jiuling.network.tools.http.request.enums.RequestMethodEnum;
import org.jiuling.network.tools.http.request.exception.RequestException;
import org.jiuling.network.tools.http.request.interfaces.Request;
import org.jiuling.network.tools.http.request.interfaces.annotations.Url;
import org.jiuling.network.tools.http.request.model.HttpRequestBody;
import org.jiuling.network.tools.http.request.model.HttpRequestHeader;
import org.jiuling.network.tools.http.request.model.HttpRequestParam;

/**
 * 萤石设备
 * @author 紫灵
 * @date 2022年11月21日 16时59分32秒
 */
public class EzvizDevice implements HttpRequestConfig {

    private static EzvizConfig ezvizConfig;

    public EzvizDevice(EzvizConfig ezvizConfig) {
        EzvizDevice.ezvizConfig = ezvizConfig;
    }

    public EzvizDevice() {
    }

    @Override
    public HttpRequestBody defaultHttpRequestBody() {
        return null;
    }

    @Override
    public HttpRequestParam defaultHttpRequestParam() {
        return null;
    }

    @Override
    public HttpRequestHeader defaultHttpRequestHeader() {
        return null;
    }

    //    @Override
//    public Map<String, String> getEzvizConfig() {
//        return null;
//    }

//    @Override
//    public Map<String, String> getEzvizConfig() {
//        try {
//            return new HashMap<String,String>(){
//                {
//                    // http拿授权
//                    GetDevice getDevice = new GetDevice();
//                    // service拿授权
//                    // api拿授权
//                    // redis做缓存
//                }
//            };
//        } catch (IntrospectionException | InvocationTargetException | IllegalAccessException | NoSuchFieldException e) {
//            throw new RuntimeException(e);
//        }
//    }

//    @Url(path = "https://open.ys7.com/api/lapp/token/get")
//    public static class GetDevice extends EzvizDevice implements Request<String> {
//        public GetDevice(EzvizConfig ezvizConfig) {
//            super(ezvizConfig);
//        }
////        @Override
////        public Map<String, String> getEzvizConfig() {
////            // 业务授权
////            return null;
////        }
//    }

    @Url(path = "https://open.ys7.com/api/lapp/token/get")
    public static class ToeknEntity extends EzvizDevice implements Request<EzvizTokenModel>{

    }



    public static void main(String[] args) throws RequestException {
        EzvizDevice.ezvizConfig = new EzvizConfig();
        EzvizDevice.ezvizConfig.setAppKey("4c834543998c4ea88797ae3f776a6c4c");
        EzvizDevice.ezvizConfig.setAppSecret("1a4e3809251bb1e38355503d92f8695e");
        EzvizDevice.ToeknEntity getDevice = new ToeknEntity();
        EzvizTokenModel ezvizTokenModel = getDevice.send(RequestMethodEnum.POST);
        System.out.println(ezvizTokenModel.getAccessToken());
    }

}
